package prassein.rsm.common.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.apache.commons.io.FileUtils;

public class SystemBackup {
	private String gMysql = "mysqldump -uroot -p1qaz2wsxE resume > _loc_";

	public boolean backupDB(String loc) throws IOException {// 备份
		String mysql = gMysql.replace("_loc_", loc);
		mysql += "/mysql.backup";
		
		Runtime rt = Runtime.getRuntime();

		// 调用 mysql 的 cmd:
		Process child = rt.exec("cmd /c" + mysql);// 设置导出编码为utf8。这里必须是utf8

		// 把进程执行中的控制台输出信息写入.sql文件，即生成了备份文件。注：如果不对控制台信息进行读出，则会导致进程堵塞无法运行
		InputStream in = child.getInputStream();// 控制台的输出信息作为输入流

		InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8，否则从流中读入的是乱码

		String inStr;
		StringBuffer sb = new StringBuffer("");
		String outStr;
		// 组合控制台输出信息字符串
		BufferedReader br = new BufferedReader(xx);
		while ((inStr = br.readLine()) != null) {
			sb.append(inStr + "\r\n");
		}
		outStr = sb.toString();

		// 要用来做导入用的sql目标文件：
		FileOutputStream fout = new FileOutputStream("db.sql");
		OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
		writer.write(outStr);
		// 注：这里如果用缓冲方式写入文件的话，会导致中文乱码，用flush()方法则可以避免
		writer.flush();

		// 别忘记关闭输入输出流
		in.close();
		xx.close();
		br.close();
		writer.close();
		fout.close();

		return true;
	}
	
	public void backupResumeFiles(String loc) throws IOException {
		File srcFile = new File("webapps/resume/upload");
		File destFile = new File(loc + "/resumeFiles");
		if (!destFile.exists()) {
			destFile.mkdirs();
		}
		FileUtils.copyDirectory(srcFile, destFile);
	}
}
